package comun;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import oracle.jdbc.OracleTypes;


import planet.bean.BeanUnidad;
import planet.comun.OracleDBConn;

public class UnidadImp implements Unidad {
	///coneccion bd Oracle////
	private Connection getConnection() {
		OracleDBConn cnx = new OracleDBConn();
		return cnx.getConnection();
	}
	///coneccion bd Oracle////


	@Override
	public Collection listarUnidad() throws Exception {
		Collection objLista = new ArrayList();
		BeanUnidad bean = null;
	    try {
	      Connection conn = getConnection();
	      boolean useOracleQuery = true;
	      String oracleQuery = "begin ? := SF_GET_UNIDAD(?,?,?,?,?); end;";
	      String genericQuery = "{ call ? := SF_GET_UNIDAD(?,?,?,?,?) }";
	      String query = useOracleQuery ? oracleQuery : genericQuery;
	      CallableStatement stmt = conn.prepareCall(query);
	      stmt.registerOutParameter(1, OracleTypes.CURSOR);
	      stmt.setString(2,"A");
	      stmt.setString(3," ");
	      stmt.setString(4," ");
	      stmt.setString(5," ");
	      stmt.setString(6," ");
	      stmt.execute();
	      ResultSet rs = (ResultSet)stmt.getObject(1);
	      while (rs.next()) {
	    	  bean = new BeanUnidad();
	    	  bean.setCOD_UNIDAD(rs.getString(1));
	    	  bean.setNOM_UNIDAD(rs.getString(2));
	    	  objLista.add(bean);
	      }
	      rs.close();
	      conn.close();
	    }catch (SQLException e) {
	      e.printStackTrace();
	    }
	    return objLista;
	  }
	@Override
	public void insertar_Unidad(BeanUnidad entidad) throws Exception {
		System.out.println("LLegoo----oracle");
		 Connection conn = getConnection();
		    CallableStatement cs=null;
		    cs= conn.prepareCall("{call SP_INS_UNIDAD(?)}");
		    try{
		      conn = getConnection();
		      cs.setString(1,entidad.getNOM_UNIDAD());
		      cs.executeUpdate ();
		    }catch(SQLException e){
		      System.out.println(e.toString());
		    }finally{
		      cs.close();
		      conn.close();
		    }

	}

	@Override
	public void actualizar_Unidad(BeanUnidad entidad) throws Exception {
		 Connection conn = getConnection();
		    CallableStatement cs=null;
		    cs= conn.prepareCall("{call SP_UPD_UNIDAD(?,?)}");
		    try{
		      conn = getConnection();
		      cs.setString(1,entidad.getCOD_UNIDAD());
		      cs.setString(2,entidad.getNOM_UNIDAD());
		      cs.executeUpdate ();
		    }catch(SQLException e){
		      System.out.println(e.toString());
		    }finally{
		      cs.close();
		      conn.close();
		    }

	}

}
